package com.c5p1ng.leetcode.editor.cn;

//给定一个非负整数 c ，你要判断是否存在两个整数 a 和 b，使得 a2 + b2 = c 。 
//
// 
//
// 示例 1： 
//
// 
//输入：c = 5
//输出：true
//解释：1 * 1 + 2 * 2 = 5
// 
//
// 示例 2： 
//
// 
//输入：c = 3
//输出：false
// 
//
// 
//
// 提示： 
//
// 
// 0 <= c <= 231 - 1 
// 
// Related Topics 数学 双指针 二分查找 
// 👍 327 👎 0

public class SumOfSquareNumbers{
    public static void main(String[] args) {
        Solution solution = new SumOfSquareNumbers().new Solution();
        
    }

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public boolean judgeSquareSum(int c) {
        if(c < 0) {
            return false;
        }
        int i = 0, j = (int) Math.sqrt(c);
        while(i <= j) {
            int powSum = i * i + j * j;
            if(powSum == c) {
                return true;
            } else if(powSum > c) {
                j--;
            } else {
                i++;
            }
        }
        return false;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}